/* TODO
    函数重载: 函数名相同, 而形参不同的多个函数
    需求: 我们有一个add函数，它可以接收2个string类型的参数进行拼接，也可以接收2个number类型的参数进行相加
*/
(()=>{
    //函数重载声明
    function add(x:string,y:string):string
    function add(x:number,y:number):number
//定义一个函数
function add(x:string|number,y:string|number): any {
    if(typeof x=='string' && typeof y=='string'){
        return x+y
    }else if(typeof x=='number' && typeof y=='number'){
        return x+y
    }
}

//函数调用
    //两个参数都是字符串
    console.log(add('诸葛','孔明'))
    //2各都是数字类型
    console.log(add(1,2))
    //此时如果传入的是非法的数据,cishi ts应该给我提处错误信息(写了函数的重载下面的代码报错)
    // console.log(add(100,'100'))
    // console.log(add('10',10))
})()
